package Window;
import org.eclipse.swt.SWT;
import org.eclipse.swt.events.DisposeEvent;
import org.eclipse.swt.events.DisposeListener;
import org.eclipse.swt.layout.GridData;
import org.eclipse.swt.layout.GridLayout;
import org.eclipse.swt.widgets.Dialog;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Event;
import org.eclipse.swt.widgets.Label;
import org.eclipse.swt.widgets.Listener;
import org.eclipse.swt.widgets.MessageBox;
import org.eclipse.swt.widgets.ProgressBar;
import org.eclipse.swt.widgets.Shell;
import Builder.BuilderConfigurationManager;
import Common.Size2;
import Common.Vector2f;
public class ProgressDlg extends Dialog {
public static void main(String args[]) {
new ProgressDlg(new Shell(), SWT.DIALOG_TRIM).open();
}
protected Object result;
protected Shell shell;
private ProgressBar progressbar;
/**
* Create the dialog.
*
* @param parent
* @param style
*/
public ProgressDlg(Shell parent, int style) {
super(parent, SWT.NO_TRIM);
setText("Progress Dialog");
}
/**
* Open the dialog.
*
* @return the result
*/
public Object open() {
createContents();
shell.open();
shell.layout();
Vector2f pos = BuilderConfigurationManager.getInstance()
.getWindowPosition();
Size2 size = BuilderConfigurationManager.getInstance().getWindowSize();
shell.setLocation((int) (pos.getX() + size.getWidth() / 2 - 100),
(int) (pos.getY() + size.getHeight() / 2));
new Label(shell, SWT.NONE);
Display display = getParent().getDisplay();
shell.addDisposeListener(new DisposeListener() {
@Override
public void widgetDisposed(DisposeEvent arg0) {
ProgressBarManager.getInstance().remove(progressbar);
}
});
new Thread(new Runnable() {
@Override
public void run() {
while (shell.isDisposed() == false) {
shell.getDisplay().asyncExec(new Runnable() {
@Override
public void run() {
if (progressbar.isDisposed() == false) {
if (BackgroundThreadManager.getInstance()
.isAllFinish()
&& shell.isDisposed() == false)
shell.dispose();
}
}
});
try {
Thread.sleep(50);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
shell.dispose();
}
}).start();
while (!shell.isDisposed()) {
if (!display.readAndDispatch()) {
display.sleep();
}
}
return result;
}
/**
* Create contents of the dialog.
*/
private void createContents() {
shell = new Shell(getParent(), SWT.DIALOG_TRIM);
shell.setSize(450, 60);
shell.setText(getText());
shell.setLayout(new GridLayout(10, false));
GridData gridData = new GridData();
gridData.horizontalAlignment = GridData.FILL;
shell.setLayoutData(gridData);
Label label_Progress = new Label(shell, SWT.NONE);
label_Progress.setText("Run...");
gridData = new GridData();
gridData.horizontalAlignment = GridData.FILL;
label_Progress.setLayoutData(gridData);
progressbar = new ProgressBar(shell, SWT.SMOOTH);
gridData = new GridData();
gridData.horizontalAlignment = GridData.FILL;
gridData.horizontalSpan = 8;
gridData.grabExcessHorizontalSpace = true;
progressbar.setLayoutData(gridData);
ProgressBarManager.getInstance().add(progressbar);
// gridData = new GridData();
// gridData.heightHint = 25;
// gridData.widthHint = 25;
// gridData.horizontalAlignment = GridData.FILL;
// Button btnStop = new Button(shell, SWT.BUTTON2);
// btnStop.addSelectionListener(new SelectionAdapter() {
// @Override
// public void widgetSelected(SelectionEvent arg0) {
//
// }
// });
// btnStop.setLayoutData(gridData);
// btnStop.setImage(ResourceManager.getInstance().getImage(
// shell.getDisplay(), "/Resource/Image/stop.png"));
}
}